'\" t
.TH "SD_ID128_RANDOMIZE" "3" "" "systemd 257.1" "sd_id128_randomize"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
sd_id128_randomize \- Generate 128\-bit IDs
.SH "SYNOPSIS"
.sp
.ft B
.nf
#include <systemd/sd\-id128\&.h>
.fi
.ft
.HP \w'int\ sd_id128_randomize('u
.BI "int sd_id128_randomize(sd_id128_t\ *" "ret" ");"
.SH "DESCRIPTION"
.PP
\fBsd_id128_randomize()\fR
generates a new randomized 128\-bit ID and returns it in
\fIret\fR\&. Every invocation returns a new randomly generated ID\&. This uses the
\fBgetrandom\fR(2)
kernel random number generator\&.
.PP
Note that
\fBsd_id128_randomize()\fR
always returns a UUID Variant 1 Version 4 compatible ID\&. It is hence guaranteed that this function will never return the ID consisting of all zero or all one bits (\fBSD_ID128_NULL\fR,
\fBSD_ID128_ALLF\fR)\&.
.PP
For more information about the
"sd_id128_t"
type, see
\fBsd-id128\fR(3)\&.
.PP
\fBsystemd-id128\fR(1)\*(Aqs
\fBnew\fR
command may be used as a command line front\-end for
\fBsd_id128_randomize()\fR\&.
.SH "RETURN VALUE"
.PP
The call returns 0 on success (in which case
\fIret\fR
is filled in), or a negative errno\-style error code\&.
.SH "NOTES"
.PP
Functions described here are available as a shared library, which can be compiled against and linked to with the
\fBlibsystemd\fR\ \&\fBpkg-config\fR(1)
file\&.
.PP
The code described here uses
\fBgetenv\fR(3), which is declared to be not multi\-thread\-safe\&. This means that the code calling the functions described here must not call
\fBsetenv\fR(3)
from a parallel thread\&. It is recommended to only do calls to
\fBsetenv()\fR
from an early phase of the program when no other threads have been started\&.
.SH "HISTORY"
.PP
\fBsd_id128_randomize()\fR
was added in version 187\&.
.SH "SEE ALSO"
.PP
\fBsystemd\fR(1), \fBsd-id128\fR(3), \fBmachine-id\fR(5), \fBgetrandom\fR(2), \fBrandom\fR(4), \fBsd_id128_get_machine\fR(3)
